package com.zbs.framework.dao.user.service;

import com.zbs.framework.dao.user.entity.BaseUserInfo;
import com.zbs.framework.dao.user.entity.MNBaseUser;

import java.util.Map;

public interface BaseUserService {

    /**
     * 用户名登录
     * @param username 用户名登录
     * @param pwd 密码
     * @param entryType 登入入口类型
     * @return
     */
    Map<String, Object> usernameLogin(String username, String pwd, String entryType);

    /**
     * 手机号登录
     * @param phone 手机号
     * @param code 验证码
     * @param entryType 登入入口类型
     * @return
     */
    Map<String, Object> phoneLogin(String phone,String code,String entryType);


    /**
     * 创建用户
     * @param acctUuid
     * @param roleIds
     * @param name
     * @param gender
     * @param birthday
     * @param headImg
     * @param phone
     * @return
     */
    MNBaseUser createUser(String acctUuid, Integer[] roleIds, String name, Character gender,
                          String birthday, String headImg, String phone);

    /**
     * 设置用户角色信息
     * @param userId
     * @param roleIds
     */
    void saveUserRoles(Long userId, Integer[] roleIds);

    /**
     * 修改密码
     * @param userId
     * @param oldPwd
     * @param newPwd
     */
    void changePwd(Long userId, String oldPwd, String newPwd);

    /**
     * 修改用户基本信息
     * @param userId
     * @param name
     * @param headImg
     * @param gender
     */
    MNBaseUser changeUserInfo(Long userId, String name, String headImg,Character gender,String birthday);

    /**
     * 用户注册
     * @param username
     * @param pwd
     * @return
     */
    MNBaseUser registerNormal(String username, String pwd);


    /**
     * 用户注册
     * @param username
     * @param pwd
     * @return
     */
    MNBaseUser registerNormal(String name,String username, String pwd);

    /**
     * 用户注册
     * @param username
     * @param pwd
     * @return
     */
    MNBaseUser registerNormal(String name,String username, String pwd,Character userType);

    /**
     * 手机号验证码注册
     * @param phone
     * @param pwd
     * @param vCode
     */
    void registerPhone(String phone, String pwd, String vCode);

    /**
     * 获取当前登录用户信息
     * @param userId
     * @return
     */
    BaseUserInfo getMyUserInfo(Long userId);
}
